import json

from django.shortcuts import render, redirect
from django.http import HttpResponse, JsonResponse

# Create your views here.
from django.urls import reverse


def index(req):
    # path = reverse("book:index")
    # print(path)
    return HttpResponse("index嗝")


def detail(req, book_id, category_id):
    # hah
    print("")
    """
    GET 和 POST
    # path = reverse("book:detail")
    # print(path)
    print(category_id, book_id)
    # query_param = req.GET  改变请求方式 这也要改变
    query_param = req.POST
    print(query_param)
    print("----------")
    # print(query_param)
    u1 = query_param['user']
    # u2 = query_param.get("user")
    # u3 = query_param.getlist("user")
    p = query_param['pw']
    # print(str("u1" + u1 + "u2" + u2 + "u3" + u3 + "p" + p))
    print(u1)
    # print(u2)
    # print(u3)
    print(p)
    """
    """
    在请求体中的参数
    # 数据在body里 要用body取，不能用POST

    # print(req.body.decode())

    req_str = req.body.decode()
    data = json.loads(req_str)  # loads 装上字典的类型
    print(data["user"])
    print("~~~~~")
    """
    """
    请求 headers 传参数
    # print(req.META)
    content_type = req.META["CONTENT_TYPE"]   # 在header中取值，要全部大写
    name = req.META["HTTP_NAME"]  # 自定义的属性，系统会自动帮忙加上  HTTP_

    print(content_type)
    print(name)
    """
    """
    # JsonResponse
    data = {"name": "lola",
            "age": "12"}
    return JsonResponse(data, status=200, content_type="application/json")
    """
    """
    重定向
    return redirect('/index/')
    return redirect("https://www.baidu.com")
    
   
    path = reverse("book:index")
    return redirect(path)
    """


def set_cookie(req):
    
    # 1 判断是否有cookie（假设无）
    # 2 获取用户名
    # 3 设置cookie
    # 4 返回响应
    
    # 2 获取用户名

    # 其实设置cookie就两步，1 拿到通过GET提交传到服务器的参数 2 通过set_cookie方法设置cookie
    user_name = req.GET.get("user_name")
    print(req.GET)   # <QueryDict: {'user_name': ['zhangsan']}> 拿到通过GET提交传到服务器的参数
    # 3 设置cookie
    response = HttpResponse("这是set_cookie函数哈哈")   # headers ？？？是页面左上角显示的文字
    response.set_cookie("user_name", user_name, max_age=600)   # 才是设置cookie 过期时间 单位是秒
    # 4 返回响应
    return response


def get_cookie(req):
    # 注意写法 COOKIES
    # 1 获取浏览器传过来的所有cookie(字典格式，为什么通过这种方式来取？嗷嗷嗷)   {'csrftoken': 'DqGQYbFA61W6HQQNe5zuzt1yCUG7yOKMgiOCNDqvJPf5p4R8Zp7Qfnalu4O3SEE4', 'username': 'laowang', 'user_name': 'zhangsan'}
    cookies = req.COOKIES
    print(cookies)

    # 2 从所有cookie中拿到想得到的cookie条目
    # cookies.GET['user_name']
    # user_name = cookies.GET('user_name')
    user_name = cookies['user_name']    # 方式一：这是从字典中取值的方法
    user_name = cookies.get('user_name')   # 方式二：一种写法而已（有时间看看实现代码）
    print(user_name)
    return HttpResponse('get_cookie')


def set_session(req):
    # 1 第一次访问 没有cookie
    print(req.COOKIES)

    # 2 验证用户名密码 假设正确
    user_id = 600060

    # 3 设置session
    req.session['user_id'] = user_id

    return HttpResponse("这是set——session页面")


def get_session(req):

    # 1 第二次及之后的访问都会携带session id信息
    print("req.COOKIES", end=":")
    print(req.COOKIES)
    print("--------")
    print("req.session", end=":")
    print(req.session)  # req.session:<django.contrib.sessions.backends.db.SessionStore object at 0x110208208>

    # 2 获取session信息 进行验证
    # 验证成功 可以取到session信息
    # sessions = req.GET.get["user_id"]  错啦
    # req.session  是字典  看着不像字典啊。。。

    # 设置session时做了两件事：1 将数据保存在数据库中 2 设置一个以session_id为key的cookie
    user_id = req.session['user_id']
    print(user_id)
    # user_id = req.session.get('user_id')   # 第二种写法
    return HttpResponse("这是get——session页面")



##################################类视图############################################
from django.views import View


class LoginView(View):
    # 通过请求方式来区分，函数名是请求方式的小写
    def get(self, req):
        return HttpResponse("get页面")

    def post(self, req):
        return HttpResponse("post页面")